package com.yfp.device.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yfp.device.domain.vo.ForeshowVo;
import com.yfp.device.domain.DeviceCurrentComboStock;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

public interface DeviceCurrentComboPlanStockMapper extends BaseMapper<DeviceCurrentComboStock> {
    /**
     * 通过机器id删除庫存信息
     *
     * @param machineSn 机器编号
     */
    void deleteByMachineId(@Param("machineSn") String machineSn);

    /**
     * 减库存
     *
     * @param machineSn 机器编号
     * @param comboId   套餐Id
     * @param roadNo    货道号
     */
    void updateInventoryByComboIdAndRoadNo(@Param("machineSn") String machineSn, @Param("comboId") String comboId,
                                           @Param("roadNo") String roadNo);

    /**
     * 根据设备id获取线上库存
     *
     * @param machineId
     * @return
     */
    List<DeviceCurrentComboStock> getByMachineId(String machineId);

    /**
     * 获取明日预告
     *
     * @param machineId
     * @param creatTime
     * @return
     */
    List<ForeshowVo> deviceComboForecast(@Param("machineId") String machineId, @Param("creatTime") Timestamp creatTime);

    /**
     * 批量插入线上库存表
     *
     * @param dccsList
     */
    void insertAll(@Param("dccsList") List<DeviceCurrentComboStock> dccsList);

    /**
     * 批量修改线上库存
     *
     * @param dccsList
     */
    void batchUpdate(@Param("dccsList") ArrayList<DeviceCurrentComboStock> dccsList);

    /**
     * 根据套餐id和机器id查询库存
     *
     * @param packageIds
     * @param machineId
     * @return
     */
    List<DeviceCurrentComboStock> listByPackageIdsAndMachineId(@Param("packageIds") List<String> packageIds, @Param("machineId") String machineId);

    /**
     * 获取线上库存信息
     * @param machineId
     * @return
     */
    List<DeviceCurrentComboStock> getByMacineId(String machineId);

    /**
     * 修改数量为0
     * @param machineSn
     */
    void updateComboNum(String machineSn);

}